﻿// Inner Fire 游戏引擎库
// DxPass 渲染器Pass功能
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 用于DirectX的渲染器。
// 此文件分装用于Pass功能
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-04-23

#pragma once

#include "dx_module.h"
#include <dx/core/frame_resource.h>

namespace ifire::dx {
class DxPass : public DxModule {
public:
  DxPass(DxGraphics* dx);
  DxPass(const DxPass& rhs) = delete;
  DxPass& operator=(const DxPass& rhs) = delete;
  ~DxPass() = default;

  void InitConfig();
  void UpdateMain();
  void UpdateSsao();

  // ------
  // 属性访问
  // ------
  PassConstants& GetMainPass() { return main_pass_; }
  UINT GetMainPassOffset() const { return pass_cbv_offset_; }

private:  
  // 游戏主PASS信息（全局）
  PassConstants main_pass_;

  // PASS在CBV中的位置
  UINT pass_cbv_offset_;

};

} // namespace ifire::dx